package org.myspringframework.beans.factory;

import org.myspringframework.beans.factory.config.postprocessor.BeanPostProcessor;
import org.myspringframework.beans.factory.config.SingletonBeanRegistry;
import org.myspringframework.utils.StringValueResolver;

/**
 * 定义了一些方法，允许对BeanFactory进行配置，从而影响Bean的创建、初始化、销毁等行为
 * 通过实现这个接口，Spring容器的配置和行为可以得到更灵活的定制
 *
 * 可获取 BeanPostProcessor、BeanClassLoader等的一个配置化接口。
 * 提供了配置beanFactory的工具
 */
public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {

    //为单例bean
    String SCOPE_SINGLETON = "singleton";

    //为原型bean
    String SCOPE_PROTOTYPE = "prototype";

    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

    /**
     * 销毁单例对象
     */
    void destroySingletons();

    /**
     *为嵌入值(如注释属性)添加字符串解析器。
     */
    void addEmbeddedValueResolver(StringValueResolver valueResolver);

    /**
     * 解析给定的内嵌值，例如注释属性。
     * @param value the value to resolve
     * @return the resolved value (may be the original value as-is)
     */
    String resolveEmbeddedValue(String value);


}